/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.model.domain.enaho.reporte;

import com.model.domain.persona.Encuestador;
import com.model.domain.tiempo.Mes;
import com.model.domain.tiempo.Periodo;
import com.model.domain.ubicacion.Conglomerado;
import com.model.domain.ubicacion.Odei;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Rdelacruz
 */
public class ListadosReporte {
    private Map<String, Odei> mapOdeis;
    private Map<String, Mes> mapMeses;
    private Map<String, Periodo> mapPeriodos;
    private Map<String, Conglomerado> mapConglomerados;
    private Map<String, Encuestador> mapEncuestadores;
    
    public ListadosReporte() {
        
    }
    
    //Desde la BD
    public void setOdeis(List<Odei> odeis) {    
        mapOdeis = new HashMap<String, Odei>();
        for (Odei o : odeis) {
            mapOdeis.put(o.getCodigo(), o);
        }
    }    
    
    public Odei getOdei(String key) {
        Odei odei = mapOdeis.get(key);
        if(odei==null) {
            odei = new Odei();            
            if(key==null) {                
                odei.setNombre("(SIN ODEI)");
            }
            else {
                odei.setCodigo(key);
                odei.setNombre("(ODEI '"+key+"')");
                mapOdeis.put(key, odei);
            }
        }
        return odei;
    }

  
        
    public void setMeses(List<Mes> meses) {        
        mapMeses = new HashMap<String, Mes>();
        for (Mes m : meses) {         
            mapMeses.put(m.getCodigo(), m);
        }
    }
    
    public Mes getMes(String key) {
        Mes mes = mapMeses.get(key);
        if(mes==null) {
            mes = new Mes();            
            if(key==null) {                
                mes.setNombre("(SIN MES)");
            }
            else {
                mes.setCodigo(key);
                mes.setNombre("(MES '"+key+"')");
                mapMeses.put(key, mes);
            }
        }
        return mes;
    }
    
        
    public void setPeriodos(List<Periodo> periodos) {    
        mapPeriodos = new HashMap<String, Periodo>();
        for (Periodo p : periodos) {
            mapPeriodos.put(p.getCodigo(), p);
        }
    }
    
    public Periodo getPeriodo(String key) {
        Periodo periodo = mapPeriodos.get(key);
        if(periodo==null) {
            periodo = new Periodo();            
            if(key==null) {                
                periodo.setNombre("(SIN PERIODO)");
            }
            else {
                periodo.setCodigo(key);
                periodo.setNombre("(PERIODO '"+key+"')");
                mapPeriodos.put(key, periodo);
            }
        }
        return periodo;
    }
    
    public void setConglomerados(List<Conglomerado> conglomerados) {    
        mapConglomerados = new HashMap<String, Conglomerado>();
        for (Conglomerado c : conglomerados) {
            mapConglomerados.put(c.getCodigo(), c);
        }
    }
    
    public Conglomerado getConglomerado(String key) {
        Conglomerado c = mapConglomerados.get(key);
        if(c==null) {
            c = new Conglomerado();            
            if(key==null) {                
                c.setCodigo("(SIN CONGLOMERADO)");
            }
            else {
                c.setCodigo(key);
                //c.setNombre("(CONGLOMERADO DESCONOCIDO)");
                mapConglomerados.put(key, c);
            }
        }
        return c;
    }
    
    public void setEncuestadores(List<Encuestador> lista) {    
        mapEncuestadores = new HashMap<String,Encuestador>();
        for (Encuestador e : lista) {
            mapEncuestadores.put(e.getDni(), e);
        }
    }
    
    public Encuestador getEncuestador(String key) {
        Encuestador e = mapEncuestadores.get(key);
        if(e==null) {
            e = new Encuestador();
            if(key==null)
                e.setNombres("(SIN ENCUESTADOR)");
            else
                e.setNombres(key);//para mostrar por lo menos el DNI
        }
        return e;
    }    
}
